package com.micro.school.order.mapper;

import java.math.BigDecimal;
import java.util.List;
import com.micro.school.order.domain.PayStudentFeePayment;
import com.micro.school.order.vo.PayStudentFeePaymentDetailExcelVo;
import com.micro.school.order.vo.PayStudentFeePaymentPreVo;
import com.micro.school.system.api.domain.vo.PayStudentFeePaymentVos;
import com.micro.school.system.api.domain.vo.PayStudentPrepaymentVos;
import org.apache.ibatis.annotations.Param;

/**
 * 支付单Mapper接口
 * 
 * @author lyb
 * @date 2025-08-19
 */
public interface PayStudentFeePaymentMapper 
{
    /**
     * 查询支付单
     * 
     * @param id 支付单主键
     * @return 支付单
     */
    public PayStudentFeePayment selectPayStudentFeePaymentById(String id);

    /**
     * 查询支付单列表
     * 
     * @param payStudentFeePayment 支付单
     * @return 支付单集合
     */
    public List<PayStudentFeePayment> selectPayStudentFeePaymentList(PayStudentFeePayment payStudentFeePayment);

    /**
     * 导出明细用
     */
    public List<PayStudentFeePaymentDetailExcelVo> selectPaymentList(PayStudentFeePayment payStudentFeePayment);



    /**
     * 预缴费明细查询
     */
    public List<PayStudentFeePaymentPreVo> selectPrepaymenttList(PayStudentFeePayment payStudentFeePayment);

    /**
     * 查询总金额-预付款
     */
    BigDecimal selectPreSumTotalAmount(PayStudentFeePayment payStudentFeePayment);

    /**
     * 查询总金额
     */
    BigDecimal selectTotalAmount(PayStudentFeePayment payStudentFeePayment);


    /**
     * 新增支付单
     * 
     * @param payStudentFeePayment 支付单
     * @return 结果
     */
    public int insertPayStudentFeePayment(PayStudentFeePayment payStudentFeePayment);

    /**
     * 修改支付单
     * 
     * @param payStudentFeePayment 支付单
     * @return 结果
     */
    public int updatePayStudentFeePayment(PayStudentFeePayment payStudentFeePayment);

    /**
     * 删除支付单
     * 
     * @param id 支付单主键
     * @return 结果
     */
    public int deletePayStudentFeePaymentById(String id);

    /**
     * 批量删除支付单
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePayStudentFeePaymentByIds(String[] ids);

    void insertOneVos(PayStudentFeePaymentVos payStudentFeePaymentVos);

    List<PayStudentFeePayment> selectStudentFeePaymentByStudentId(@Param("studentId") Long studentId,@Param("feeYearId") Long feeYearId);

    void updatePayStudentFeePayment1(PayStudentFeePayment payStudentFeePayment);

    PayStudentFeePayment selectPayStudentFeePayment(String payNo);

    void updatePayStudentFeePaymentByPayNo(PayStudentFeePaymentVos payStudentFeePaymentVos);

    PayStudentFeePaymentVos selectByPayNo(String payNo);
}
